package exercise;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/*
b.设计一个简单的动物园管理系统，展示多态的应用。
要求：
创建一个Animal父类，具有makeSound()方法，所有动物都会发出不同的声音。
创建几个继承Animal类的子类：Dog、Cat、Cow。每个子类都实现makeSound()方法，分别输出不同的声音。
创建一个Zoo类，其中包含一个List<Animal>，用于管理动物。通过addAnimal(Animal animal)方法将动物添加到动物园。
在Zoo类中实现一个方法showAnimalSounds()，遍历所有动物，调用每个动物的makeSound()方法，展示动物的声音

 */
public class ex2 {
    public static void main(String[] args) {
        Zoo zoo = new Zoo();
        zoo.addAnimal(new Dog());
        zoo.addAnimal(new Cat());
        zoo.addAnimal(new Cow());
        zoo.showAnimalSounds();
    }
}

class Zoo {
    private List<Animal> animals;

    public Zoo() {
        animals = new ArrayList<>();
    }

    public void addAnimal(Animal animal) {
        animals.add(animal);
    }

    public void showAnimalSounds() {
        for (Animal animal : animals)
            animal.makeSound();
    }

}

abstract class Animal {
    public abstract void makeSound();
}


class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪~");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵~");
    }
}

class Cow extends Animal {
    @Override
    public void makeSound() {
        System.out.println("哞哞哞~");
    }
}


class A {
    int a;

    public A(int a) {
        this.a = a;
    }
}

class B extends A {
    public B() {
        super(1);
    }
}